home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / comm / misc / Oma1.16.lha / Oma1.16 / OMA < prev    next >
Text File  |  1998-10-17  |  10KB  |  474 lines

  1. /* $VER: OMA 1.16 (14 Oct 1998)
  2. diverse Berechnungen des OnlineMeterLogFile
  3. */
  4.  
  5. IF EXISTS("LIBS:rexxsupport.library")~=1 THEN DO
  6.  SAY "Kann die <rexxsupport.library> nicht öffnen !"
  7.  EXIT(10)
  8. END
  9.  
  10. IF EXISTS("LIBS:rexxreqtools.library")~=1 THEN DO
  11.  SAY "Kann die <rexxreqtools.library> nicht öffnen !"
  12.  EXIT(10)
  13. END
  14.  
  15. IF EXISTS("LIBS:rexxtricks.library")~=1 THEN DO
  16.  SAY "Kann die <rexxtricks.library> nicht öffnen!"
  17.  EXIT(10)
  18. END
  19.  
  20. IF EXISTS("ENVARC:Online/Online.prefs")~=1 THEN DO
  21.  SAY "Kann Online.log nicht finden !"
  22.  SAY "Ist OnlineMeter installiert ?"
  23.  EXIT(10)
  24. END
  25.  
  26. ADDLIB("rexxsupport.library",10,-30,0)
  27. ADDLIB("rexxreqtools.library",11,-30,0)
  28. ADDLIB("rexxtricks.library",9,-30,0)
  29.  
  30. nl = "0a"x
  31.  
  32. fontname = GETTOOLTYPEVALUE(OMA,FONTNAME)
  33. IF rc = 10 THEN rtfont = "RT_FONT=topaz.font/8"
  34.  ELSE CALL FontInit
  35.  
  36. graph = GETTOOLTYPEVALUE(OMA,BARGRAPH)
  37.  
  38. IF graph = 1 THEN IF EXISTS("LIBS:rexxarplib.library")~=1 THEN DO
  39.  RTEZREQUEST(" Kann die <rexxarplib.library> nicht öffnen !" nl nl,
  40.               "     > Schalte Bargraphanzeige aus. <"nl nl,
  41.               "--------------------------------------------" nl,
  42.               "Abhilfe: Library besorgen" nl,
  43.               "oder     BARGRAPH-ToolType auf 0 stellen",,"Fehler")
  44.  graph = 0
  45.  END
  46.  ELSE ADDLIB("rexxarplib.library",10,-30,0)
  47.  
  48. OPEN(Datei,"ENVARC:Online/Online.prefs",READ)
  49.  
  50. READCH(Datei,55)
  51. string  = READLN(Datei)
  52. logfile = COMPRESS(string,xrange("00"x,"1f"x))
  53.  
  54. CLOSE(Datei)
  55.  
  56. rtpos  = "RT_REQPOS=REQPOS_CENTERSCR"
  57. gesamt = 0
  58.  
  59. READFILE(logfile,zeile)
  60.  
  61. anfang   = WORD(zeile.1,2)
  62. eintrage = zeile.0
  63. ende     = WORD(zeile.eintrage,2)
  64. barinit  = TRUNC(zeile.0 / 40)
  65.  
  66.  
  67. /* HauptMenu Auswahlmöglichkeiten */
  68.  
  69. Hauptmenu:
  70.  
  71. DO FOREVER
  72.  
  73.  auswahl = RTEZREQUEST(" Berechnung und Auswertung vom OnlineMeterLogfile"nl,
  74.                        "------------------------------------------------"nl,
  75.                        "Logfile      : "logfile nl,
  76.                        "Zeitraum     : "anfang" bis "ende nl,
  77.                        "Einträge     : "zeile.0,"Statistik|Monat|Zeitraum|Beenden","Version1.16 (14-Oct-98) Copyright by Uwe Bleck",rtpos rtfont)
  78.  
  79.  IF auswahl = 0 THEN EXIT
  80.  IF auswahl = 1 THEN CALL Statistik
  81.  IF auswahl = 2 THEN CALL Monat
  82.  IF auswahl = 3 THEN CALL Zeitraum
  83.  
  84. END
  85.  
  86.  
  87. /* Monat */
  88.  
  89. Monat:
  90.  
  91. bar   = ""
  92. barwert = barinit
  93.  
  94. summe = 0 ; h = 0 ; m = 0 ; s = 0 ; anz = 0 ;
  95.  
  96. ausgabe1 = " Monat     Gebühren      Zeit     Verbindungen"
  97. ausgabe2 = ""
  98. index = SUBSTR(anfang,4,6)
  99.  
  100. DO i = 1 to zeile.0
  101.  IF barwert = i & graph > 0 THEN CALL BarGraph
  102.  IF index ~= SUBSTR(WORD(zeile.i,2),4,6) THEN CALL Liste
  103.  h = h + VALUE(SUBSTR(WORD(zeile.i,4),1,2))
  104.  m = m + VALUE(SUBSTR(WORD(zeile.i,4),4,2))
  105.  s = s + VALUE(SUBSTR(WORD(zeile.i,4),7,2))
  106.  preis = WORD(zeile.i,5)
  107.  summe = summe + preis
  108.  anz = anz + 1
  109. END
  110.  
  111. CALL Liste
  112.  
  113. IF graph = 1 THEN POSTMSG()
  114.  
  115. RTEZREQUEST(ausgabe1,
  116.             ausgabe2,"Ok","Monat",rtpos rtfont)
  117.  
  118. RETURN
  119.  
  120. Liste:
  121.  
  122. s1 = TRUNC(s/60)
  123. m = m + s1
  124. sec = s -(s1 * 60)
  125. m1 = TRUNC(m / 60)
  126. h = h + m1
  127. min = m - (m1 * 60)
  128.  
  129. CALL Formatierung
  130.  
  131. ausgabe2 = ausgabe2  nl  index"   "list1" DM   "list2":"list3":"list4"        "list5
  132.  
  133. index = SUBSTR(WORD(zeile.i,2),4,6)
  134. summe = 0 ; h = 0 ; m = 0 ; s = 0 ; anz = 0
  135.  
  136. RETURN
  137.  
  138.  
  139. /* Zeitraum */
  140.  
  141. Zeitraum:
  142.  
  143. bar   = ""
  144. barwert = barinit
  145. summe = 0 ; h = 0 ; m = 0 ; s = 0 ; anz = 0
  146.  
  147. anfangsdatum = RTGETSTRING(,"StartDatum eingeben im Format"nl,
  148.                             "   T.M.JJ oder TT.MM.JJ"nl,
  149.                             "   (Enter für "anfang")","Anfangsdatum","Enter",rtpos rtfont)
  150.  
  151. enddatum = RTGETSTRING(,"EndDatum eingeben im Format"nl,
  152.                         "  T.M.JJ oder TT.MM.JJ"nl,
  153.                         "  (Enter für "ende")","Enddatum","Enter",rtpos rtfont)
  154. IF LENGTH(anfangsdatum) = 0 THEN anfangsdatum = anfang
  155. IF LENGTH(enddatum) = 0 THEN enddatum = ende
  156.  
  157. Ausgabe1 = "Zeitraum von "anfangsdatum" bis "enddatum
  158. datum = anfangsdatum
  159. CALL DatumsWandlung
  160. index1 = datum
  161. datum = enddatum
  162. CALL DatumsWandlung
  163. index2 = datum
  164.  
  165. DO i = 1 to zeile.0
  166.  IF barwert = i & graph > 0 THEN CALL BarGraph
  167.  datum = WORD(zeile.i,2)
  168.  CALL DatumsWandlung1
  169.  IF datum >= index1 THEN BREAK
  170. END
  171.  
  172. DO n = i to zeile.0
  173.  IF barwert = n & graph > 0 THEN CALL BarGraph
  174.  datum = WORD(zeile.n,2)
  175.  CALL DatumsWandlung1
  176.  IF datum > index2 THEN BREAK
  177.  h = h + SUBSTR(WORD(zeile.n,4),1,2)
  178.  m = m + SUBSTR(WORD(zeile.n,4),4,2)
  179.  s = s + SUBSTR(WORD(zeile.n,4),7,2)
  180.  summe = summe + WORD(zeile.n,5)
  181.  anz = anz + 1
  182. END
  183.  
  184. IF graph = 1 THEN POSTMSG()
  185.  
  186. s1 = TRUNC(s / 60)
  187. m = m + s1
  188. sec = s - (s1 * 60)
  189. m1 = TRUNC(m / 60)
  190. h = h + m1
  191. min = m - (m1 * 60)
  192.  
  193. list1 = summe
  194. list2 = h
  195. IF min < 10 THEN list3 = INSERT("0",min)
  196.  ELSE list3 = min
  197.  
  198. IF sec < 10 THEN list4 = INSERT("0",sec)
  199.  ELSE list4 = sec
  200.  
  201. list5 = anz
  202.  
  203. ausgabe2 = "Gebühren     : "list1" DM"
  204. ausgabe3 = "Zeit         : "list2" h "list3" min "list4" sec"
  205. ausgabe4 = "Verbindungen : "list5
  206.  
  207.  
  208. CLOSE(Log)
  209.  
  210. RTEZREQUEST(ausgabe1 nl,
  211.             nl,
  212.             ausgabe2 nl,
  213.             ausgabe3 nl,
  214.             ausgabe4,"Ok","Zeitraum",rtpos rtfont)
  215.  
  216. RETURN
  217.  
  218.  
  219. /* Statistik */
  220.  
  221. Statistik:
  222.  
  223. TIME(R)
  224. summe = 0 ; anz = 0
  225. teuer = 0 ; billig = 999
  226. oft = 0 ; selten = 99
  227. effekt = 0
  228. h = 0 ; m = 0 ; s = 0
  229. hzeit = 0  ; Nzeit = 9999
  230. gessumme = 0
  231. index = anfang
  232. bar   = ""
  233. barwert = barinit
  234.  
  235. DO i = 1 to zeile.0
  236.  IF barwert = i & graph > 0 THEN CALL BarGraph
  237.  IF index ~= WORD(zeile.i,2) THEN CALL Auswert
  238.  tetag = WORD(zeile.i,2)
  239.  h = h + SUBSTR(WORD(zeile.i,4),1,2)
  240.  m = m + SUBSTR(WORD(zeile.i,4),4,2)
  241.  s = s + SUBSTR(WORD(zeile.i,4),7,2)
  242.  preis = WORD(zeile.i,5)
  243.  summe = summe + preis
  244.  anz = anz + 1
  245.  IF i = zeile.0 THEN CALL Auswert
  246. END
  247.  
  248. summe = gessumme
  249. CALL Formatierung
  250. ausgabe5 = "Gesamtsumme            : "list1" DM"
  251. summe = TRUNC(gessumme / effekt,2)
  252. CALL Formatierung
  253. ausgabe1 = "Tage (effektiv)        : "effekt
  254. ausgabe9 = "Ø pro Tag              : "list1" DM"
  255. summe = TRUNC(gessumme / eintrage,2)
  256. CALL Formatierung
  257. ausgabe10 = "Ø pro Verbindung       : "list1" DM"
  258.  
  259. SELECT
  260.  WHEN LENGTH(graph) = 0 THEN barinfo = "ausgeschaltet"
  261.  WHEN graph = 0 THEN barinfo = "ausgeschaltet"
  262.  WHEN graph = 1 THEN barinfo = "eingeschaltet"
  263. END
  264.  
  265. IF graph = 1 THEN POSTMSG()
  266. time=TIME(e)
  267.  
  268. RTEZREQUEST(" Größe des Logfiles     : "WORD(STATEF(logfile),2)" Bytes" nl,
  269.             "Zeitraum               : "anfang" bis "ende nl,
  270.             "Verbindungen           : "eintrage nl,
  271.             ausgabe1 nl,
  272.             ausgabe5 nl,
  273.             ausgabe9 nl,
  274.             ausgabe10 nl,
  275.             "------------------------------------------------" nl,
  276.             "der letzte Tag mit..." nl nl,
  277.             ausgabe2 nl,
  278.             ausgabe6 nl nl,
  279.             ausgabe3 nl,
  280.             ausgabe7 nl nl,
  281.             ausgabe4 nl,
  282.             ausgabe8 nl,
  283.             "------------------------------------------------" nl,
  284.             "FONT                   :" SUBSTR(rtfont,9) nl,
  285.             "BARGRAPH               :" barinfo nl,
  286.             "Dauer der Berechnung   :" time "Sekunden","Ok","Statistik von "logfile,rtpos rtfont)
  287.  
  288. RETURN
  289.  
  290. Teuertag:
  291.  
  292. CALL  Formatierung
  293. ausgabe2 = "höchstem Entgeld       : "tetag"  - "list1" DM"
  294. teuer = summe
  295. RETURN
  296.  
  297. Billigtag:
  298.  
  299. CALL  Formatierung
  300. ausgabe6 = "niedrigstem Entgeld    : "tetag"  - "list1" DM"
  301. billig = summe
  302. RETURN
  303.  
  304. Haufig:
  305.  
  306. CALL  Formatierung
  307. ausgabe3 = "meisten Verbindungen   : "tetag"  - "list5
  308. oft = anz
  309. RETURN
  310.  
  311. Selten:
  312.  
  313. CALL  Formatierung
  314. ausgabe7 = "wenigsten Verbindungen : "tetag"  - "list5
  315. selten = anz
  316. RETURN
  317.  
  318. Zeit:
  319.  
  320. s1 = TRUNC(s / 60)
  321. m = m + s1
  322. sec = s - (s1 * 60)
  323. m1 = TRUNC(m / 60)
  324. h = h + m1
  325. min = m - (m1 * 60)
  326.  
  327. CALL Formatierung
  328.  
  329. ausgabe4 = "längster Verbindung    : "tetag"  - "list2":"list3":"list4
  330. hzeit = zeit
  331.  
  332. RETURN
  333.  
  334. nZeit:
  335.  
  336. s1 = TRUNC(s / 60)
  337. m = m + s1
  338. sec = s - (s1 * 60)
  339. m1 = TRUNC(m / 60)
  340. h = h + m1
  341. min = m - (m1 * 60)
  342.  
  343. CALL Formatierung
  344.  
  345. ausgabe8 = "kürzester Verbindung   : "tetag"  - "list2":"list3":"list4
  346. nzeit = zeit
  347.  
  348. RETURN
  349.  
  350. Auswert:
  351. zeit = (h * 60 * 60) + (m * 60) + s
  352. IF zeit >= hzeit THEN CALL Zeit
  353. IF summe >= teuer THEN CALL Teuertag
  354. IF anz >= oft THEN CALL Haufig
  355. IF zeit <= nzeit THEN CALL nZeit
  356. IF summe <= billig THEN CALL Billigtag
  357. IF anz <= selten THEN CALL Selten
  358. gessumme = gessumme + summe
  359. summe = 0 ; anz = 0 ; zeit = 0 ; h = 0 ; m = 0 ; s = 0
  360. index = WORD(zeile.i,2)
  361. effekt = effek